// /pages/login/login.js

// 获取 App 实例，以便调用全局方法和访问全局数据
const app = getApp();
import { uploadAvatar, updateProfile } from '../../utils/userService.js';


Page({
  data: {
    // 控制按钮的 loading 状态
    loading: false,
    // 控制底部资料完善弹窗的显示与隐藏
    showProfilePopup: false
  },

  /**
   * 用户点击“微信登录”按钮时触发
   */
  handleWechatLogin() {
    this.setData({ loading: true });

    // 1. 调用微信的登录接口，获取临时的 code
    wx.login({
      success: (res) => {
        if (res.code) {
          // 2.【后端接口1】使用全局 request 函数发送 code 到后台，换取 token
          app.request({
            url: '/api/app/auth/login', // 只需提供相对路径
            method: 'POST',
            data: { code: res.code }
          }).then(loginRes => {
            // 登录成功，后端返回了 返回了 token 和 user_profile
            console.log(loginRes);
            const { access_token, user_profile, is_new_user,token_type} = loginRes;
            // 先把 Token 和用户信息存起来
            wx.setStorageSync('token', access_token);
            app.globalData.userInfo = user_profile; // 更新全局用户信息

            if (is_new_user) {
              // 如果是新用户，或者资料不完善 -> 拉起弹窗
              this.setData({ showProfilePopup: true });
            } else {
              // 如果是老用户，且资料已完善 -> 直接登录成功，返回上一页
              this.setData({ loading: false });
              wx.showToast({ title: '登录成功', icon: 'success' });
              setTimeout(() => {
                wx.navigateBack();
              }, 1500);
            }
          }).catch(err => {
            console.error("基础登录失败", err);
            this.setData({ loading: false }); // 登录失败，结束 loading
          });
        } else {
          wx.showToast({ title: '获取登录凭证失败', icon: 'error' });
          this.setData({ loading: false });
        }
      },
      fail: (err) => {
        wx.showToast({ title: '调起微信登录失败', icon: 'error' });
        this.setData({ loading: false });
      }
    });
  },
  /**
   * 当 profile-popup 组件触发 'complete' 事件时调用
   */
  async onProfileComplete(e) {
    // 关闭弹窗并结束按钮 loading
    this.setData({ showProfilePopup: false, loading: false });
    const { nickname, avatarUrl } = e.detail;

    wx.showLoading({ title: '正在为您设置...' });
  
    try {
      // 准备要发送给后端的数据结构
      const finalProfileData = {
        nickname: nickname,
        avatar_url: null, // 默认为 null
        real_name: '',    // 补全其他必需字段为空字符串
        phone: '',
        group_name: '',
      };
      // 微信临时文件路径通常以 'wxfile://' 或 'http://tmp/' 开头
      if (avatarUrl.startsWith('wxfile://') || avatarUrl.startsWith('http://tmp/')) {
      // 这是一个需要上传的临时文件
      const permanentUrl = await uploadAvatar(avatarUrl);
      finalProfileData.avatar_url = permanentUrl; // 将上传后的永久URL赋给要提交的数据
      } else {
        // finalProfileData.avatar_url 保持为 null，后端会据此设置默认头像。
      }
      // 调用统一的更新接口
      const updatedUser = await userService.updateProfile(finalProfileData);
      app.globalData.userInfo = updatedUser;
      wx.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 1500
      });
      setTimeout(() => {
        // wx.navigateBack 会返回到跳转来的页面
        wx.navigateBack();
      }, 1500);// 给上一页（比如 user 页面）留出时间来接收成功提示
    } catch (err) {
      console.error('初始设置流程失败', err);
    } finally {
      wx.hideLoading();
    }
  }
});